<?php

if(!function_exists('getSn')){
    /**
     * 获取订单SN码
     * 跟据用户id减少重复可能性
     * @param $user_id
     * @return string
     */
    function getSn($user_id)
    {
        $date_str=date('YmdHis');
        $rand_str=mt_rand(100000, 999999);
        $user_str=str_pad($user_id, 6, '0',STR_PAD_LEFT);
        $sn=$date_str.$user_str.$rand_str;
        return $sn;
    }
}

if(!function_exists('str2arr')){
    /**
     * 字符串转换为数组，主要用于把分隔符调整到第二个参数
     * @param  string $str 要分割的字符串
     * @param  string $glue 分割符
     * @param bool $strict 是否严格:true如果没有分割符也会变转变成数组，false如果没有分割符返回字符串
     * @return array
     */
    function str2arr($str,$glue = ",",$strict = true)
    {
        if(is_array($str)){
            return $str;
        }
        $search = symbol_shift($glue);
        if($search){
            $str = str_replace($search, $glue, $str);
        }
        if(!$strict&&strpos($str,$glue) === false){
            return $str;
        }
        if(in_array($glue,['|','\\','/'])){
            $pattern_glue = '\\'.$glue;
        }else{
            $pattern_glue = $glue;
        }
        $str = preg_replace("/(".$pattern_glue."+?)\\1+/is", $glue, $str);
        return array_values(array_filter(explode($glue, $str),function ($v){
            return trim($v)=='' ||strtolower($v) == 'null'||ctype_space($v)?false:true;
        }));
    }
}
if(!function_exists('arr2str')){
    function arr2str($arr, $glue = ',')
    {
        return is_array($arr)?implode($glue, $arr):$arr;
    }
}

if(!function_exists('symbol_shift')){
    /**
     * @title中英文符号切换
     * @param string $str
     * @param bool $key
     * @return mixed|Ambigous <string>
     */
    function symbol_shift($str,$key=true)
    {
        $arr = array(
            '，'=>',','：' => ':','|'=>'|',
            '－'=>'-','——'=>'-'
        );
        if($key){
            return array_keys($arr,$str);
        }else{
            return $arr[$str];
        }
    }
}